package com.ymcv.proyecto7.view;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.ymcv.proyecto7.R;
import com.ymcv.proyecto7.controller.UsuarioController;
import com.ymcv.proyecto7.model.entity.Usuario;

public class Trafico_Fragment extends SupportMapFragment {

	private static Trafico_Fragment fraTrafico;

	Marker miPunto,punto1,punto2;
	GoogleMap mapa;

	public Trafico_Fragment() {
	}

	public static Trafico_Fragment getInstance() {
		if (fraTrafico == null) {
			fraTrafico = new Trafico_Fragment();
		}
		return fraTrafico;
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

	}

	@Override
	public void onResume() {
		super.onResume();
		levantarMapa();
		UsuarioController con = new UsuarioController(getActivity().getApplicationContext());
		Usuario u = con.obtenerUsuario();
		LatLng punto = new LatLng(u.getLat(), u.getLon());
		CameraUpdate update = CameraUpdateFactory.newLatLngZoom(punto,15);
		mapa.animateCamera(update);
		mostrarMiUbicacion(punto);
		
		Bundle extras = getActivity().getIntent().getExtras();
		if (extras != null) {
			if (extras.getBoolean("push")) {
				Log.i("args", "hay push para cargar");
				double p1_1 = Double.parseDouble(extras.getString("latorig"));
				double p1_2 = Double.parseDouble(extras.getString("lonorig"));
				double p2_1 = Double.parseDouble(extras.getString("latdest"));
				double p2_2 = Double.parseDouble(extras.getString("londest"));
				ponerPuntos(new LatLng(p1_1, p1_2), new LatLng(p2_1, p2_2));
			} else {
				quitarPuntos();
			}
		} else {
			Log.i("servicio", "extras es null");
		}
		
		
		
	}

	
	public void ponerPuntos(LatLng latlon1 , LatLng latlon2){
		if (mapa != null) {
			quitarPuntos();
			MarkerOptions marker = new MarkerOptions().position(latlon1).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)).title("Origen");
			punto1 = mapa.addMarker(marker);
			marker = new MarkerOptions().position(latlon2).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)).title("Destino");
			punto2 = mapa.addMarker(marker);
		}
	}
	
	public void quitarPuntos(){
		if(punto1!=null){
			punto1.remove();
		}
		if(punto2!=null){
			punto2.remove();
		}
	}
	
	public void levantarMapa() {
			mapa = super.getMap();
	}

	public void mostrarMiUbicacion(LatLng punto) {
		if (mapa != null) {
			if (miPunto != null) {
				miPunto.remove();
			}
			MarkerOptions marker = new MarkerOptions().position(punto).icon(BitmapDescriptorFactory.fromResource(R.drawable.mipunto));
			miPunto = mapa.addMarker(marker);
		}
	}
}
